<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //JavaScript 提供定时执行代码的功能，叫做定时器，主要由setTimeout()和setinterval()这两个函数来完成。它们向任务队列添加定时任务
    //setTimeout函数用来指定某个函数或某段代码，在多少毫秒之后执行，它返回一个整数，表示定时器的编号，以后可以用来取消这个定时器
    //setTimeout函数接受两个参数，第一参数function|code是将要推迟执行的函数名或者一段代码，第二个参数delay是推迟执行的毫秒数
    var timer = setTimeout(function(){
        console.log("延迟了3秒执行")
    },3000)
    //温馨提示：还有一个需要注意的地方，如果回调函数是对象的方法，那么setTimeout()使得方法内部的this关键字指向全局环境，
    // 而不是定义所在的那个对象
    var name = 'test'
    var user = {
        name:"YANG",
        getName:function(){
            console.log(this.name)//this指的就是user对象
            var username = this
            setTimeout(function(){
                console.log(this.name) //this指向全局环境，也就是window对象
            },3000)
            setTimeout(function(){
                console.log(username.name) //如果想this指向user对象的话,可以在定时器外层定义一个变量username，将this赋值给username，然后再定时器内使用username.name
            },3000)
        }
    }
    user.getName()

    //取消定时器
    clearTimeout(timer)
</script>